import { defineStore } from '@/pinia'

export const useTodolistStore = defineStore('todoList', {
    state: () => ({
        todos: [],  // id:number,text:string,isFinished:boolean
        filter: 'all', // all,finish,unfinish
        nextId: 0
    }),
    getters: {
        finishedTodos(state) {
            return state.todos.filter(todo => todo.isFinished)
        },
        unfinishTodos(state) {
            return state.todos.filter(todo => !todo.isFinished)
        },
        filteredTodos() {
            switch (this.filter) {
                case 'finish':
                    return this.finishedTodos
                case 'unfinish':
                    return this.unfinishTodos
                default:
                    return this.todos
            }
        }
    },
    actions: {
        addTodo(text) {
            this.todos.push({
                id: this.nextId++,
                text,
                isFinished: false
            })
        },
        toggleTodo(id) {
            const todos = this.todos.map(todo => {
                if (todo.id === id) {
                    todo.isFinished = !todo.isFinished
                }
            })
            return todos
        },
        removeTodo(id) {
            this.todos = this.todos.filter(todo => todo.id !== id)
        }
    },

})